library(dplyr)
library(Seurat)
library(patchwork)
data<-readRDS("seurat_data.Rds")
pdf('DimPlot_celltype_major.pdf',width=7,height=6)
DimPlot(data,group.by='celltype_major')
dev.off()

pdf('DimPlot_celltype_minor.pdf',width=10,height=6)
DimPlot(data,group.by='celltype_minor')
dev.off()

pdf('DimPlot_celltype_subset.pdf',width=15,height=6)
DimPlot(data, group.by = 'celltype_subset')
dev.off()

data@active.ident<-factor(data$celltype_major)
gene<-c('MS4A1','CD79A','PDGFRA','EPCAM','PECAM1','CD68','JCHAIN','ACTA2','CD3D')
pdf('VlnPlot_markers.pdf',width=12,height=12)
VlnPlot(data, features = gene, pt.size=0)
dev.off()
library(RColorBrewer)
pdf('FeaturePlot_markers.pdf',width=12,height=12)
FeaturePlot(data,features=gene,cols = brewer.pal(9,"Reds"))
dev.off()

data$label<-ifelse(data$celltype_major=='Myeloid',data$celltype_minor,data$celltype_major)
pdf('DimPlot_celltype_label.pdf',width=7,height=6)
DimPlot(data, group.by = 'label')
dev.off()
library(iTALK)
library(Matrix)
library(dplyr)
iTalk_data <- as.data.frame(t(data@assays$RNA@counts))
iTalk_data$cell_type <- data$label
iTalk_data$compare_group <- 'Group'
highly_exprs_genes <- rawParse(iTalk_data, top_genes=50, stats="mean")
comm_list<-c('growth factor','other','cytokine','checkpoint')
cell_types <- unique(iTalk_data$cell_type)
iTalk_res <- NULL
for(comm_type in comm_list){
  res_cat <- FindLR(highly_exprs_genes, datatype='mean count', comm_type=comm_type)
  iTalk_res <- rbind(iTalk_res, res_cat)
}
iTalk_res <- iTalk_res[order(iTalk_res$cell_from_mean_exprs*iTalk_res$cell_to_mean_exprs,decreasing=T),]
my11colors <- brewer.pal(12,'Set3')
cell_col <- structure(my11colors[1:length(cell_types)], names=cell_types)
pdf('NetView_All.pdf',width=10,height=10)
NetView(iTalk_res,col=cell_col,vertex.size=25,vertex.label.cex=1.5,arrow.width=1,edge.max.width=5,label = FALSE)
dev.off()
saveRDS(data, file="seurat_annotated_data.Rds")
rm(iTalk_data,cell_col,cell_types,comm_list,comm_type,res_cat)

gene<-read.csv('ferroptosis.csv',quote='',header=T)
phe<-read.table('pheTNBC_.txt',quote='',header=T,row.names=1,sep='\t')
data@active.assay<-'RNA'
data <- NormalizeData(data, normalization.method = "LogNormalize")
a<-data@assays$RNA@data
a<-as.data.frame(a)
gene<-a[rownames(a)%in%gene$id,]
rm(a)
gene<-gene[rowSums(gene)>0,]
cell<-data@meta.data
gene<-as.data.frame(t(gene))
cell$cell<-rownames(cell)
phe$orig.ident<-paste('CID',rownames(phe),sep='')
cell<-merge(phe,cell,by='orig.ident')
cell$Age<-ifelse(cell$Age>60,'>60','<=60')
gene$cell<-rownames(gene)
gene<-merge(cell,gene,by='cell')
rownames(gene)<-gene$cell
gene<-gene[,-1]
age<-gene[,c(-1,-2,-4:-14)]
age<-aggregate(age[,-1],by = list(age$Age),mean)
type<-gene[,c(-1:-3,-5:-14)]
type<-aggregate(type[,-1],by = list(type$Cancer_Type),mean)
tstage<-gene[,c(-1:-4,-6:-14)]
tstage<-aggregate(tstage[,-1],by = list(tstage$T_Stage),mean)
tstage<-tstage[-1,]
label<-gene[,c(-1:-13)]
label<-aggregate(label[,-1],by = list(label$label),mean)
all<-rbind(age,type,tstage,label)
age<-as.data.frame(table(cell$Age))
type<-as.data.frame(table(cell$Cancer_Type))
tstage<-as.data.frame(table(cell$T_Stage))
tstage<-tstage[-1,]
label<-as.data.frame(table(cell$label))
cell_number<-rbind(age,type,tstage,label)
rownames(all)<-all$Group.1
library('ComplexHeatmap')
library('circlize')
bar <- rowAnnotation(sum = anno_barplot(cell_number$Freq[1:7],bar_width = 0.9,gp = gpar(col = "white", fill = "grey"),border = F,axis_param = list(at = c(0,11500,23000),labels = c("0","11500","23000")),width = unit(3, "cm")), show_annotation_name = F)
pdf('heatmap_phe.pdf',width=7,height=4)
Heatmap(scale(all[1:7,-1]),right_annotation=bar,cluster_rows = FALSE,name = "AveExpression",show_column_names=FALSE,row_names_side = "left")
dev.off()
df<-as.data.frame(cell_number$Var1[-1:-7])
names(df)<-'Cell'
ha<-HeatmapAnnotation(df=df)
pdf('heatmap_cell.pdf',width=10,height=8)
Heatmap(t(scale(all[-1:-7,-1])),top_annotation = ha,cluster_columns = FALSE,name = "AveExpression",show_row_names=FALSE,column_names_rot=45)
dev.off()

data<-SplitObject(data, split.by = "label")
data<-data[c(5,6)]
saveRDS(data$Macrophage, file="M_seurat_data.Rds")
saveRDS(data$`T-cells`, file="T_seurat_data.Rds")
gene<-gene[gene$label=='Macrophage'|gene$label=='T-cells',]
write.csv(gene,'gene_cell_expr.csv',quote=F)
rm(age,all,bar,cell,cell_number,data,df,ha,tstage,type,phe,my11colors,label)

gene<-read.csv('gene_cell_expr.csv',quote = '',header=T,row.names=1,check.names=F)
cell<-gene[,1:14]
gene<-gene[,-1:-14]
m<-gene[cell$label=='Macrophage',]
t<-gene[cell$label=='T-cells',]

library(NMF)
t<-as.data.frame(t(t))
t<-t[rowSums(t)>0,]
t.rank <- nmf(t,2:10,nrun=10,seed=1,method = 'brunet') 
pdf('t_rank.pdf',width=8)
plot(t.rank)
dev.off()

m<-as.data.frame(t(m))
m<-m[rowSums(m)>0,]
m.rank <- nmf(m,2:10,nrun=10,seed=1,method = 'brunet') 
pdf('m_rank.pdf',width=8)
plot(m.rank)
dev.off()

t.rank3 <- nmf(t,3,nrun=10,seed=1,method = 'brunet') 
t.group <- as.data.frame(predict(t.rank3))
names(t.group)<-'nmf_cluster'
t.group$nmf_cluster<-paste('T_C',t.group$nmf_cluster,sep='')
write.csv(t.group,'t_clutser.csv',quote=F)

m.rank2 <- nmf(m,2,nrun=10,seed=1,method = 'brunet') 
m.group <- as.data.frame(predict(m.rank2))
names(m.group)<-'nmf_cluster'
m.group$nmf_cluster<-paste('M_C',m.group$nmf_cluster,sep='')
write.csv(m.group,'m_clutser.csv',quote=F)

group<-rbind(m.group,t.group)
group$cell<-rownames(group)
cell$cell<-rownames(cell)
cell<-merge(cell,group,by='cell')
library(ggplot2)
library(RColorBrewer)
names(cell)[16]<-'NMF_cluster'
pdf('patient_cell.pdf',width=8,height=6)
ggplot(cell,aes(x=orig.ident,y=1,fill=NMF_cluster))+geom_bar(stat="identity",position="fill")+labs(x='',y='Cell Proportion')+theme_bw()+theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())+theme(panel.border=element_blank())+theme(axis.line=element_line(colour="black"))+scale_fill_manual(values = brewer.pal(7,'Paired'))
dev.off()
rm(m.rank,t.rank,gene,m,t)








